package com.fingard.dsp.bank.directbank.scb02;

import java.io.File;
import java.util.*;

import com.fingard.constant.Format;
import com.fingard.dsp.bank.directbank.bankInterface.IBatPayRec;
import com.fingard.dsp.bank.reqrespobj.batpayrec.ReqBatPayRec;
import com.fingard.dsp.bank.reqrespobj.batpayrec.ReqQryBatPayRec;
import com.fingard.dsp.bank.reqrespobj.batpayrec.RetAtsBatPayRec;
import com.fingard.dsp.bank.reqrespobj.batpayrec.RetAtsQryBatPayRec;
import com.fingard.dsp.bank.reqrespobj.batpayrec.detail.RetAtsBatPayRecDetail;
import com.fingard.io.FileHelper;
import com.fingard.text.StringHelper;

/**
 * @author XueJy on 2018/8/7.
 * @version 1.0
 */
public class SCB02BatPayRec extends SCB02Base implements IBatPayRec {

    /**
     * 批量支付
     */
    @Override
    public RetAtsBatPayRec d_1988_BatPay(ReqBatPayRec p_req1988) throws Exception {
        //创建返回对象
        RetAtsBatPayRec retAts = new RetAtsBatPayRec(p_req1988.reqHeader);
        //returnAts报文头
        retAts.retHeader.bankCode = p_req1988.reqHeader.bankCode;
        retAts.retHeader.transType = p_req1988.reqHeader.transType;
        retAts.retHeader.transSeqID = p_req1988.reqHeader.transSeqID;
        //支付请求码
        retAts.reqSeqID = p_req1988.reqBatchNO;
        //文件复制结果
        boolean copyResult = false;
        try {
            List<String> askNums = new ArrayList<String>();
            //请求报文体
            String strBody;
            //判断指令代码跳入 对应分支
            //本地付款ACH  单笔批量本地实时付款RTGS
            strBody = getMsgBody(p_req1988, askNums);
            //总笔数,总金额
            String strTotalNum = p_req1988.totalNum;
            String strTotalAmt = p_req1988.totalAmt;
            //Header Record 和 Trailer Record
            String strHead = "H,P\r\n";
            String strTrail = "T" + "," + strTotalNum + "," + strTotalAmt;
            //结合报文
            StringBuilder sbPayment = new StringBuilder();
            sbPayment.append(strHead).append(strBody).append(strTrail);
            //2.发送银行的报文
            WriteBankLogStep2(sbPayment);
            String batchCode = p_req1988.reqBatchNO;
            //通过配置文件读取支付文件导出路径:渣打银行client接收来自DSP发送付款文件所存放的路径
            String paymentCsvPath = getH2HPath("PaymentFilePath");
//            paymentCsvPath = "D:\\work\\DSP开发\\SCB02\\测试";
            //发送银行的地址：
            WriteBankUrlLogLn(paymentCsvPath);
            if (StringHelper.isNullOrEmpty(paymentCsvPath)) {
                //FileLogTrace.Exception(_LogCode, "生成支付文件路径为空!");
            }
            //生成余额请求文件到备份目录的路径
            String bakDirectory = getDataFileDirectory(new Date()) + File.separator + "paymentbak\\";
            String bakfullName = getTrimPath(bakDirectory) + File.separator + batchCode + ".csv";
            String batchNoMappingFile = getTrimPath(bakDirectory) + File.separator + batchCode + ".txt";
            //生成scv文件保存到指定目录
            boolean genCsvResult = writeFile(bakfullName, sbPayment.toString(), getCharset());
            StringBuilder sb = new StringBuilder();
            for (String askNum : askNums) {
                sb.append(askNum).append(",");
            }
            if (askNums.size() > 0) {
                sb.delete(sb.length() - 1, sb.length());
            }
            boolean genMapResult = writeFile(batchNoMappingFile, sb.toString(), getCharset());
            if (genCsvResult && genMapResult) {
                //拷贝生成的支付文件到前置机目录
                copyResult = copyFile(bakfullName, paymentCsvPath);
                if (copyResult) {
                    //在一切都成功之后，将数据插入到数据库中。
                    retAts.respCode = "0";
                    retAts.respInfo = "提交成功";
                    retAts.transState = "0000";
                    retAts.payInfoCode = "0000";
                } else {
                    retAts.respCode = "0";
                    retAts.transState = "BatchFailed";
                    retAts.payInfoCode = "E1301";
                    retAts.respInfo = "拷贝交易流水/批次号：" + batchCode + "支付请求文件发送到指定目录失败";
                }
            } else {
                retAts.respCode = "-1";
                retAts.transState = "BatchFailed";
                retAts.payInfoCode = "E1301";
                retAts.respInfo = "交易流水/批次号：" + batchCode + " 生成支付文件失败!";
            }
        } catch (Exception e) {
            if (copyResult) {
                retAts.respInfo = "提交成功,但是插入数据库失败，结果将无法查询，请联系开发人员进行解决,错误信息如下" + e.getMessage();
            } else {
                retAts.respCode = "-1";
                retAts.respInfo = "提交异常,错误信息如下" + e.getMessage();
                WriteBankLogLn(e);
            }
        }
        retAts.writeRetToATS();
        return retAts;
    }

    /**
     * 批量支付结果查询
     */
    @Override
    public RetAtsQryBatPayRec d_1998_QryBatPay(ReqQryBatPayRec p_req1998) throws Exception {
        RetAtsQryBatPayRec retAts = new RetAtsQryBatPayRec(p_req1998.reqHeader);
        //初始化返回信息
        retAts.retHeader.bankCode = p_req1998.reqHeader.bankCode;
        retAts.retHeader.transType = p_req1998.reqHeader.transType;
        retAts.retHeader.transSeqID = p_req1998.reqHeader.transSeqID;
        //返回详情
        String batchNo = p_req1998.reqBatchNO;

        retAts.reqSeqID = batchNo;
        //默认为支付中
        retAts.transState = "4";
        //计算日期，如果日期大于指定日期区间，则不允许查询, 在允许的情况下，获取一个日期的集合，用来排查文件夹名。
        Calendar calNow = Calendar.getInstance();
        calNow.setTime(new Date());
        Calendar calBgn = Calendar.getInstance();
        calBgn.setTime(p_req1998.getBgnDateTime());
        //获取天数差
        int days = calNow.get(Calendar.DAY_OF_YEAR) - calBgn.get(Calendar.DAY_OF_YEAR);
        String queryResultDateSpan = getBankConfig().getMapValueByKey("params", "QueryResultDateSpan");
        //判断 请求的的日期是否满足要求
        if (queryResultDateSpan != null && !"".equals(queryResultDateSpan)) {
            if (days > Integer.parseInt(queryResultDateSpan) || days < 0) {
                retAts.respCode = "-1";
                if (days < 0) {
                    retAts.respInfo = "单据发送日期超出查询日期";
                } else {
                    retAts.respInfo = "单据发送日期与查询日期相隔时间太长,时间间隔规定小于" + Integer.parseInt(queryResultDateSpan);
                }
                retAts.writeBeforeDetail();
                retAts.writeAfterDetail();
                return retAts;
                //日期超限了。。不能查询
            }
        }
        List<Date> dateBufer = new ArrayList<Date>();
        dateBufer.add(calBgn.getTime());
        for (int i = 0; i < days; i++) {
            calBgn.add(Calendar.DAY_OF_MONTH, 1);
            dateBufer.add(calBgn.getTime());
        }
        //排序
        //        dateBufer.Sort();
        //        dateBufer.Reverse();
        // 第一步，先下载（复制）所有文件到本地目录（带日期的），下载完毕之后还要删除原来的文件
        try {
            scb02Download();
        } catch (Exception e) {
            retAts.respCode = "-1";
            retAts.respInfo = "下载（复制）文件到本地目录失败";
            retAts.writeBeforeDetail();
            retAts.writeAfterDetail();
            WriteBankLogLn(e);
            return retAts;
        }
        // 第二步，先判断是不是整批失败？
        StringBuilder errorCode = new StringBuilder();
        StringBuilder errorMessage = new StringBuilder();
        String respType = "";
        //tmpReqSeqID:流水号批次号
        String payFlieName = batchNo + ".csv";
        String ack3Path = getH2HPath("PayReturnACK3byWINTER");
        String toPath2 = "";
        for (Date datePathDate : dateBufer) {
            //yyyyMMdd
            String datePath = Format.Date8Format.format(datePathDate);
            //获取支付状态响应类型
            toPath2 = getTrimPath(ack3Path) + File.separator + datePath.substring(0, 6) + File.separator + datePath.substring(6, 8);
            respType = getPaymentStatusResponseType(toPath2, payFlieName);
            if (StringHelper.isNullOrEmpty(respType)) {
                String rej3Path = getH2HPath("PayReturnREJ3byWINTER");
                String toPath3 = getTrimPath(rej3Path) + datePath;
                respType = getPaymentStatusResponseTypeREJ3(toPath3, payFlieName, errorCode, errorMessage);
                if (respType != null && !"".equals(respType)) {
                    retAts.respCode = "0";
                    retAts.respInfo = errorMessage.toString();
                    retAts.transState = respType + "+" + errorCode.toString();
                    retAts.payInfoCode = errorCode.toString();
                    retAts.writeAfterDetail();
                    return retAts;
                    //如果找到了值，那么就直接跳出循环，返回结果了，并且整批失败；
                }
            } else {
                break;
            }
        }
        //跳出循环后
        // 第三步，先找出，需要查询的流水号
        String bakDirectory = getDataFileDirectory(p_req1998.getBgnDateTime()) + File.separator + "paymentbak\\";
        String batchNoMappingFile = getTrimPath(bakDirectory) + File.separator + batchNo + ".txt";
        String content = FileHelper.readFileText(batchNoMappingFile, getCharset());
        if ("".equals(content) || content == null) {
            retAts.respCode = "-1";
            retAts.respInfo = batchNoMappingFile + "中未找到批次号，请联系技术人员";
            retAts.payInfoCode = "";
            retAts.writeAfterDetail();
            return retAts;
        }
        List<String> dtpostscripts = new ArrayList<String>(Arrays.asList(content.split(",")));

        // 第四步，创建循环体，找出一批当中所有的批次后开始循环赋值
        //第一层 要查找的流水号总过数量循环
        //String postscript = DR[0].ToString();
        // 拨玉米皮，开始检索
        //第二层，日期文件夹
        //  Hashtable htable = new Hashtable();
        List<RetAtsBatPayRecDetail> detail1998s = paypoc(dateBufer, dtpostscripts);
        if (detail1998s.size() == 0) {
            retAts.respCode = "0";
            retAts.respInfo = "还未查到相关流水号的数据，对方还未返回结果";
            //支付中
            retAts.transState = "4";
            retAts.payInfoCode = "";
            retAts.writeAfterDetail();
            return retAts;
        } else {
            retAts.respCode = "0";
            retAts.respInfo = "查询成功";
            for (RetAtsBatPayRecDetail detail1998 : detail1998s) {
                retAts.writeRetDetail(detail1998);
            }
            retAts.writeAfterDetail();
            return retAts;
        }
        //批量
    }

    /**
     * 批量代收(代扣)
     */
    @Override
    public RetAtsBatPayRec d_9188_BatPay(ReqBatPayRec p_req9188) throws Exception {
        return null;
        //创建返回对象
        //        RetAtsBatPayRec retAts = new RetAtsBatPayRec(p_req9188.reqHeader);
        //        String tmpReqSeqID = p_req9188.reqHeader.reqSeqID;
        //        retAts.reqSeqID = p_req9188.reqHeader.reqSeqID;
        //        String batchCode = tmpReqSeqID;
        //        //支付文件拷贝前置机结果
        //        boolean copyResult = false;
        //        //存入数据库的集合
        //        List<SCB02Entity> recEntityList = new ArrayList<SCB02Entity>();
        //
        //        StringBuilder strBody = new StringBuilder();
        //        String tmpRecAct = p_req9188.ownAct;
        //        String tmpRecBankCode = "";
        //        while (p_req9188.readRecord()) {
        //            ReqPayRecDetail readedDetail = p_req9188.readedDetail;
        //            tmpRecBankCode = readedDetail.recBankCode;
        //            String tmpPayAreaName = readedDetail.payAreaName;
        //            String[] tmpAreas = tmpPayAreaName.split("_");
        //            String tmpProvince = tmpAreas[0];
        //            tmpProvince = tmpProvince.replace("省", "").replace("市", "")
        //                    .replace("壮族自治区", "").replace("维吾尔自治区", "")
        //                    .replace("回族自治区", "").replace("自治区", "");
        //            // BOC ______-- 广东省 - 深圳市, //如果中行这里发送的是广东省-深圳市，那么就不传广东，要传深圳
        //            if ("104".equals(readedDetail.payBankCode)) {
        //                String tmpAreas2 = tmpAreas[1];
        //                if ("深圳市".equals(tmpAreas2)) {
        //                    tmpProvince = "深圳";
        //                }
        //            }
        //            String tmpCertType = readedDetail.certType;
        //            String tmpCertNum = readedDetail.certNum;
        //            if (tmpCertType.length() == 0 || tmpCertNum.length() == 0) {
        //                tmpCertType = "";
        //                tmpCertNum = "";
        //            } else {
        //                //证件转换
        //                String tmpNewCertType = convertCertTypeToBank(tmpCertType);
        //                if (!"".equals(tmpNewCertType)) {
        //                    tmpCertType = tmpNewCertType;
        //                }
        //            }
        //
        //            Date tmpPayDate = readedDetail.getPayDateTime();
        //            //拼接报文体
        //            strBody.append("D"
        //                    + "," + readedDetail.payBankCode
        //                    + "," //+ readedDetail.payArea
        //                    + "," + readedDetail.payAct
        //                    + "," + hasCommaAddDoubleQuotes(readedDetail.payName)
        //                    + "," + readedDetail.askNumber
        //                    + "," + readedDetail.payAmount
        //                    + "," + Format.Date8Format.format(tmpPayDate)
        //                    + "," + hasCommaAddDoubleQuotes(readedDetail.memo)
        //                    + "," + "00600"//00600 保险费等
        //                    + "," + ""
        //                    + "," + ""
        //                    + "," + tmpProvince
        //                    + "," + tmpCertType
        //                    + "," + tmpCertNum
        //                    + "," + ""
        //                    + "," + ""
        //                    + "," + readedDetail.reqReserved1
        //                    + "," + "\r\n");
        //            SCB02Entity recEntity = new SCB02Entity();
        //            //  特殊加工，将数据装入SCB02DateBaseEntity
        //            recEntity.setCommandcode(p_req9188.reqHeader.commandCode);
        //            recEntity.setReqseqid(batchCode);
        //            recEntity.setPostscript(readedDetail.askNumber);
        //            recEntity.setPaydate(Format.Date8Format.format(tmpPayDate));
        //            recEntity.setReturnstate("1");
        //            recEntity.setCreatetime(Format.DateTimeFormat.format(new Date()));
        //            recEntity.setLastupdate(Format.DateTimeFormat.format(new Date()));
        //            recEntity.setTranstype(p_req9188.reqHeader.transType);
        //            recEntityList.add(recEntity);
        //
        //        }
        //        //报文头信息
        //
        //        if (!"".equals(getBankConfig().getMapValueByKey("params", "TmpRecBankCode"))) {
        //            tmpRecBankCode = getBankConfig().getMapValueByKey("params", "TmpRecBankCode");
        //        }
        //
        //        StringBuilder tmpSbFile = new StringBuilder();
        //
        //        tmpSbFile.append("H," + tmpRecBankCode + "," + tmpRecAct + "," + tmpReqSeqID + ",CN,CNY\r\n");
        //        tmpSbFile.append(strBody.toString());
        //        //String i = "I,," + _ClientReqDoc.SelectSingleNode("descendant::TotalAmt").InnerText + ",,\r\n";
        //        //tmpSbFile.Append(i);
        //        tmpSbFile.append("T," + p_req9188.totalNum + ",0," + p_req9188.totalAmt + ",0\r\n");
        //        WriteBankLogStep2(tmpSbFile);
        //        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM\\dd\\");
        //        //支付文件暂存文件位置
        //        String tempPath = getTrimPath(getDataFileDirectory(new Date())) + File.separator + "batchRec";
        //        String fullFilePath = tempPath + File.separator + tmpReqSeqID + ".csv";
        //        //报文写入文件存在tempfile/年月/日/bankCode文件夹
        //        boolean genRes = writeFile(fullFilePath, tmpSbFile.toString(), getCharset());
        //        WriteBankLogLn("代收付发送银行文件暂存" + fullFilePath);
        //        String tmpBatRecCsvPath = getH2HPath("BatRecFilePath");
        //        if (genRes) {
        //            if (tmpBatRecCsvPath.length() > 0) {
        //                copyResult = copyFile(fullFilePath, tmpBatRecCsvPath);
        //                if (copyResult) {
        //                    //在一切都成功之后，将数据插入到数据库中。
        //                    retAts.respCode = "0";
        //                    retAts.transState = "0000";
        //                    retAts.payInfoCode = "I4001";
        //                    retAts.respInfo = "提交成功";
        //                    if (0 == execInsert(recEntityList)) {
        //                        retAts.respInfo = "提交成功,但是插入数据库失败，结果将无法查询";
        //                        retAts.writeRetToATS();
        //                        return retAts;
        //                    }
        //                } else {
        //                    retAts.respCode = "-1";
        //                    retAts.transState = "BatchFailed";
        //                    retAts.payInfoCode = "E1301";
        //                    retAts.respInfo = "生成代收（代扣）文件复制失败!";
        //                }
        //            } else {
        //                retAts.respCode = "-1";
        //                retAts.transState = "BatchFailed";
        //                retAts.payInfoCode = "E1301";
        //                retAts.respInfo = "生成代收（代扣）文件路径为空!";
        //            }
        //        } else {
        //            retAts.respCode = "-1";
        //            retAts.transState = "BatchFailed";
        //            retAts.payInfoCode = "E1301";
        //            retAts.respInfo = "交易流水/批次号：" + batchCode + " 生成支付文件失败!";
        //        }
        //        retAts.writeRetToATS();
        //        return retAts;
    }

    /**
     * 批量代收(代扣)结果查询
     */
    @Override
    public RetAtsQryBatPayRec d_9198_QryBatPay(ReqQryBatPayRec p_req9198) throws Exception {
        return null;
        //        RetAtsQryBatPayRec retAts = new RetAtsQryBatPayRec(p_req9198.reqHeader);
        //        //初始化返回信息
        //        retAts.retHeader.bankCode = p_req9198.reqHeader.bankCode;
        //        retAts.retHeader.transType = p_req9198.reqHeader.transType;
        //        retAts.retHeader.transSeqID = p_req9198.reqHeader.transSeqID;
        //        //默认为支付中
        //        retAts.respCode = "0";
        //        retAts.respInfo = "获取成功";
        //        String reqSeqID = p_req9198.reqBatchNO;
        //        retAts.reqSeqID = reqSeqID;
        //
        //        //返回详情对象
        //        RetAtsBatPayRecDetail retDetail = new RetAtsBatPayRecDetail();
        //
        //        //计算日期，如果日期大于指定日期区间，则不允许查询, 在允许的情况下，获取一个日期的集合，用来排查文件夹名。
        //        Calendar calNow = Calendar.getInstance();
        //        calNow.setTime(new Date());
        //        Calendar calBgn = Calendar.getInstance();
        //        calBgn.setTime(p_req9198.getBgnDateTime());
        //        //获取天数差
        //        int days = calNow.get(Calendar.DAY_OF_YEAR) - calBgn.get(Calendar.DAY_OF_YEAR);
        //        String queryResultDateSpan = getBankConfig().getMapValueByKey("params", "QueryResultDateSpan");
        //        //判断 请求的的日期是否满足要求
        //        if (queryResultDateSpan != null && "".equals(queryResultDateSpan)) {
        //            if (days > Integer.parseInt(queryResultDateSpan) || days < 0) {
        //                retAts.respCode = "-1";
        //                if (days < 0) {
        //                    retAts.respInfo = "单据发送日期超出查询日期";
        //                    WriteBankLogLn("单据发送日期超出查询日期,时间间隔规定小于");
        //                } else {
        //                    retAts.respInfo = "单据发送日期与查询日期相隔时间太长,时间间隔规定小于" + Integer.parseInt(queryResultDateSpan);
        //                    WriteBankLogLn("单据发送日期与查询日期相隔时间太长,时间间隔规定小于" + Integer.parseInt(queryResultDateSpan));
        //                }
        //                retAts.writeBeforeDetail();
        //                retAts.writeAfterDetail();
        //                return retAts;
        //                //日期超限了。。不能查询
        //            }
        //        }
        //        List<Date> dateBufer = new ArrayList<Date>();
        //        dateBufer.add(calBgn.getTime());
        //        for (int i = 0; i < days; i++) {
        //            calBgn.add(Calendar.DAY_OF_MONTH, 1);
        //            dateBufer.add(calBgn.getTime());
        //        }
        //
        //        //排序
        //        //        dateBufer.Sort();
        //        //        dateBufer.Reverse();
        //
        //        // 第一步，先下载（复制）所有文件到本地目录（带日期的），下载完毕之后还要删除原来的文件
        //
        //        try {
        //            scb02Download();
        //        } catch (Exception e) {
        //            retAts.respCode = "-1";
        //            retAts.respInfo = "下载（复制）文件到本地目录失败";
        //            retAts.writeBeforeDetail();
        //            retAts.writeAfterDetail();
        //            WriteBankLogLn(e);
        //            return retAts;
        //        }
        //        // 第二步，先判断是不是整批失败？
        //        StringBuilder eorryCode = new StringBuilder();
        //        StringBuilder eorryMessage = new StringBuilder();
        //        String respType = "";
        //        for (Date datePathDate : dateBufer) {
        //            //yyyyMMdd
        //            String datePath = Format.Date8Format.format(datePathDate);
        //            //如果整批失败，就OUT 错误信息。
        //
        //            //tmpReqSeqID:流水号批次号
        //            String payFlieName = reqSeqID + ".csv";
        //
        //            //获取支付状态响应类型
        //            String ack3Path = getH2HPath("RecReturnACK3byWINTER");
        //            String toPath2 = getTrimPath(ack3Path) + File.separator + datePath.substring(0, 6) + File.separator + datePath.substring(6, 8);
        //            respType = getPaymentStatusResponseType(toPath2, payFlieName);
        //            if (StringHelper.isNullOrEmpty(respType)) {
        //                String rej3Path = getH2HPath("RecReturnREJ3byWINTER");
        //                String toPath3 = getTrimPath(rej3Path) + File.separator + datePath;
        //                respType = getPaymentStatusResponseTypeREJ3(toPath3, payFlieName, eorryCode, eorryMessage);
        //                if (respType != null && !"".equals(respType)) {
        //                    retAts.respInfo = eorryMessage.toString();
        //                    //这里也可以
        //                    retDetail.payInfoCode = eorryCode.toString();
        //                    retAts.transState = respType + "+" + eorryCode.toString();
        ////                    if (!_TransType.equals("1944")) {
        ////                        xln_tmpParentNode.RemoveChild(xln_tmpToCloneChild);
        ////                    }
        //                    retAts.writeBeforeDetail();
        //                    retAts.writeRetDetail(retDetail);
        //                    retAts.writeAfterDetail();
        //                    return retAts;
        //                    //如果找到了值，那么就直接跳出循环，返回结果了，并且整批失败；
        //                }
        //            }
        //        }
        //        //跳出循环后
        //
        //        // 第三步，先找出，需要查询的流水号
        //        String querySql = "select g.postscript from scb02bywinter g  where g.reqseqid =? ";
        //        String[] param = new String[]{reqSeqID};
        //        List<Map<String, Object>> dtpostscript = JDBCHelper.execQuery(FGBiz.dspCenter.dspSet.dbConnectionSet.getConnection(), querySql, param);
        //        if (dtpostscript.size() <= 0) {
        //            retAts.respInfo = " DSP中scb02bywinter表或者文件中未找到批次号，请联系技术人员";
        //            //支付中
        //            retDetail.payInfoCode = "";
        //            retAts.transState = "4";
        //            retAts.writeBeforeDetail();
        //            retAts.writeRetDetail(retDetail);
        //            retAts.writeAfterDetail();
        //            return retAts;
        //        }
        //
        //        // 第四步，创建循环体，找出一批当中所有的批次后开始循环赋值
        //        //第一层 要查找的流水号总过数量循环
        //        //String postscript = DR[0].ToString();
        //
        //        // 拨玉米皮，开始检索
        //        //第二层，日期文件夹
        //
        //        //  Hashtable htable = new Hashtable();
        //        List<RetAtsBatPayRecDetail> detail9198s = recpoc(dateBufer, respType, dtpostscript);
        //        if (detail9198s.size() == 0) {
        //            retAts.respInfo = "还未查到相关流水号的数据，对方还未返回结果";
        //            //这里也可以
        //            //支付中
        //            retAts.transState = "4";
        //            retAts.payInfoCode = "";
        //            retAts.writeBeforeDetail();
        //            retAts.writeRetDetail(retDetail);
        //            retAts.writeAfterDetail();
        //            return retAts;
        //        }
        //        //批量
        //        for (RetAtsBatPayRecDetail detail1998 : detail9198s) {
        //            retAts.writeRetDetail(detail1998);
        //        }
        //        retAts.writeAfterDetail();
        //        return retAts;
    }


}
